// background.js - 后台服务脚本
console.log('语雀转Markdown插件后台脚本已启动');

// 安装和更新事件
chrome.runtime.onInstalled.addListener((details) => {
    console.log('插件已安装/更新', details);
    
    if (details.reason === 'install') {
        // 首次安装时的欢迎消息
        try {
            chrome.notifications.create({
                type: 'basic',
                iconUrl: 'icons/icon48.png',
                title: '语雀转Markdown插件',
                message: '插件安装成功！打开语雀文档即可使用。'
            });
        } catch (error) {
            console.error('创建安装通知失败:', error);
        }
    }
});

// 监听来自content script的消息
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    console.log('后台收到消息:', request);
    
    if (request.action === 'logUsage') {
        // 记录使用情况
        logUsage(request.data);
    }
    
    return true;
});

// 记录使用情况
function logUsage(data) {
    // 保存到本地存储
    chrome.storage.local.get(['usageStats'], (result) => {
        const stats = result.usageStats || [];
        stats.push(data);
        
        // 保留最近100条记录
        const recentStats = stats.slice(-100);
        
        chrome.storage.local.set({
            usageStats: recentStats
        }, () => {
            console.log('使用情况已记录');
        });
    });
}

// 右键菜单支持
try {
    chrome.contextMenus.create({
        id: 'yuque-to-markdown',
        title: '转换为Markdown',
        contexts: ['page'],
        documentUrlPatterns: ['https://www.yuque.com/*']
    });
} catch (error) {
    console.error('创建右键菜单失败:', error);
}

// 处理右键菜单点击
chrome.contextMenus.onClicked.addListener((info, tab) => {
    if (info.menuItemId === 'yuque-to-markdown') {
        // 向当前标签页发送转换消息
        chrome.tabs.sendMessage(tab.id, {
            action: 'convertToMarkdown'
        }, (response) => {
            if (response && response.success) {
                // 显示成功通知
                try {
                    chrome.notifications.create({
                        type: 'basic',
                        iconUrl: 'icons/icon48.png',
                        title: '转换成功',
                        message: 'Markdown内容已准备就绪，请点击插件图标复制。'
                    });
                } catch (error) {
                    console.error('创建成功通知失败:', error);
                }
            } else {
                // 显示错误通知
                try {
                    chrome.notifications.create({
                        type: 'basic',
                        iconUrl: 'icons/icon48.png',
                        title: '转换失败',
                        message: response?.error || '转换过程中发生错误'
                    });
                } catch (error) {
                    console.error('创建错误通知失败:', error);
                }
            }
        });
    }
});

// 标签页更新监听
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
    if (changeInfo.status === 'complete' && tab.url && tab.url.includes('yuque.com')) {
        console.log('语雀页面加载完成:', tab.url);
        
        // 可以在这里添加一些页面加载完成后的逻辑
        // 比如检查内容是否已准备好
    }
});

// 处理快捷键命令
chrome.commands.onCommand.addListener((command) => {
    if (command === 'convert-to-markdown') {
        chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
            if (tabs[0] && tabs[0].url && tabs[0].url.includes('yuque.com')) {
                chrome.tabs.sendMessage(tabs[0].id, {
                    action: 'convertToMarkdown'
                });
            }
        });
    }
});

// 检查语雀页面的可访问性
async function checkYuqueAccess() {
    try {
        const response = await fetch('https://www.yuque.com/', {
            method: 'HEAD',
            mode: 'no-cors'
        });
        return true;
    } catch (error) {
        console.error('无法访问语雀:', error);
        return false;
    }
}

// 定期检查插件状态
setInterval(() => {
    console.log('插件状态检查...');
    
    chrome.storage.local.get(['usageStats'], (result) => {
        const stats = result.usageStats || [];
        console.log(`已记录 ${stats.length} 次使用`);
    });
}, 60000); // 每分钟检查一次

// 导出使用统计数据
function exportUsageStats() {
    chrome.storage.local.get(['usageStats'], (result) => {
        const stats = result.usageStats || [];
        const blob = new Blob([JSON.stringify(stats, null, 2)], {
            type: 'application/json'
        });
        
        const url = URL.createObjectURL(blob);
        chrome.downloads.download({
            url: url,
            filename: `yuque-markdown-usage-${Date.now()}.json`
        });
    });
}

// 清理旧数据
function cleanupOldData() {
    chrome.storage.local.get(['usageStats'], (result) => {
        const stats = result.usageStats || [];
        const thirtyDaysAgo = Date.now() - (30 * 24 * 60 * 60 * 1000);
        
        const recentStats = stats.filter(stat => {
            const timestamp = new Date(stat.timestamp).getTime();
            return timestamp > thirtyDaysAgo;
        });
        
        chrome.storage.local.set({
            usageStats: recentStats
        }, () => {
            console.log(`清理完成，保留 ${recentStats.length} 条记录`);
        });
    });
}

// 每天清理一次旧数据
setInterval(cleanupOldData, 24 * 60 * 60 * 1000); 